package willis.sword.offer.algorithm.stack;

import java.util.Stack;


/**
 * 用两个栈来实现一个队列，完成队列的Push和Pop操作。 队列中的元素为int类型。
 *
 * 栈是先进后出
 */
public class TwoStackSolution {


    private Stack<Integer> a=new Stack<>();


    private Stack<Integer> b=new Stack<>();


    /**
     * 放元素
     * @param node
     * @return
     */
    public void push(Integer node){
        a.push(node);
    }

    /**
     *出元素
     */

    public Integer pop(){
        if(!b.empty()){
           return b.pop();
        }
        if (!a.empty()){
            //这样取值a里面还有元素
//            for (Integer node : a) {
//                b.push(node);
//            }
            while (!a.empty()){
                b.push(a.pop());
            }
            return b.pop();
        }
        return null;
    }

    public static void main(String[] args) {
        TwoStackSolution solution=new TwoStackSolution();
        for (int i = 0; i < 10; i++) {
            solution.push(i);
            if(i==3 || i==9){
                System.out.println(solution.pop());
            }
        }
        while(true){
            Integer pop = solution.pop();
            if (pop==null){
               break;
            }else {
                System.out.println("验证数据："+pop);
            }
        }
    }

}
